package fr.afcepf.projet2.metiers.donnees.assembleur.catalogue;


import fr.afcepf.projet2.metiers.donnees.dto.catalogue.CategorieDto;
import fr.afcepf.projet2.metiers.donnees.entites.catalogue.Categorie;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Classe permettant l'assemblage des donnes DTO <-> ENTITES
 * Categories
 * @author Sylvain
 */
public class CategorieAssembleur {

    /**
     * Permet la création d'un DTO pour utilisation service/managedBean
     *
     * @param categorie Entity de type Categorie
     * @return dto de type Categorie
     */
    public static CategorieDto creationCategorieDto(Categorie categorie) {
        CategorieDto categorieDto = new CategorieDto();
        categorieDto.setIdCategorie(categorie.getIdCategorie());
        categorieDto.setCategorie(categorie.getCategorie());
        categorieDto.setPhoto(categorie.getPhoto());
        categorieDto.setSite(categorie.getSite());
        return categorieDto;
    }

    /**
     * Création de la liste Categories
     *
     * @param categories liste d'entités de type categories
     * @return Liste de categories
     */
    public static List<CategorieDto> creationListeCategorieDto(List<Categorie> categories) {
        List<CategorieDto> listCategorie = new ArrayList<>();
        for (Categorie cat : categories) {
            CategorieDto c = creationCategorieDto(cat);
            listCategorie.add(c);
        }
        return listCategorie;
    }

    /**
     * Permet la création d'un Bean pour utilisation Dao
     *
     * @param categorieDto DTO de type Categorie
     * @return categoire
     */
    public static Categorie updateCategorie(CategorieDto categorieDto) {
        Categorie categorie = new Categorie();
        categorie.setIdCategorie(categorieDto.getIdCategorie());
        categorie.setCategorie(categorieDto.getCategorie());
        categorie.setPhoto(categorieDto.getPhoto());
        categorie.setSite(categorieDto.getSite());
        return categorie;
    }

    /**
     * Création de la liste Categories
     *
     * @param categories liste d'entités de type categories
     * @return Liste de categories
     */
    public static Set<Categorie> updateListeCategorie(Set<CategorieDto> categoriesDto) {
        Set<Categorie> listCategorie = new HashSet<>();
        for (CategorieDto cat : categoriesDto) {
            Categorie c = updateCategorie(cat);
            listCategorie.add(c);
        }
        return listCategorie;
    }
}
